
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  
<!-- Mirrored from werkzeug.palletsprojects.com/en/1.0.x/deployment/mod_wsgi/ by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 15 Sep 2020 06:37:09 GMT -->
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>mod_wsgi (Apache) &#8212; Werkzeug Documentation (1.0.x)</title>
    <link rel="stylesheet" href="../../_static/werkzeug.css" type="text/css" />
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
    <link rel="stylesheet" type="text/css" href="../../../../../assets.readthedocs.org/static/css/badge_only.css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="../../_static/language_data.js"></script>
    <script async="async" type="text/javascript" src="../../../../../assets.readthedocs.org/static/javascript/readthedocs-doc-embed.js"></script>
    <link rel="shortcut icon" href="../../_static/favicon.ico"/>
    <link rel="index" title="Index" href="../../genindex/index.html" />
    <link rel="search" title="Search" href="../../search/index.html" />
    <link rel="next" title="FastCGI" href="../fastcgi/index.html" />
    <link rel="prev" title="CGI" href="../cgi/index.html" />
    <link rel="canonical" href="index.html">
  <script>DOCUMENTATION_OPTIONS.URL_ROOT = '../../index.html';</script>
   
  
<!-- RTD Extra Head -->

<!-- 
Always link to the latest version, as canonical.
http://docs.readthedocs.org/en/latest/canonical.html
-->
<link rel="canonical" href="index.html" />

<link rel="stylesheet" href="../../../../../assets.readthedocs.org/static/css/readthedocs-doc-embed.css" type="text/css" />

<script type="text/javascript" src="../../_static/readthedocs-data.js"></script>

<!-- Add page-specific data, which must exist in the page js, not global -->
<script type="text/javascript">
READTHEDOCS_DATA['page'] = "deployment/mod_wsgi"
READTHEDOCS_DATA['source_suffix'] = ".rst"
</script>

<script type="text/javascript" src="../../../../../assets.readthedocs.org/static/javascript/readthedocs-analytics.js" async="async"></script>

<!-- end RTD <extrahead> -->
</head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../genindex/index.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../../py-modindex/index.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="../fastcgi/index.html" title="FastCGI"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="../cgi/index.html" title="CGI"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="../../index.html">Werkzeug Documentation (1.0.x)</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Application Deployment</a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="mod-wsgi-apache">
<h1><cite>mod_wsgi</cite> (Apache)<a class="headerlink" href="#mod-wsgi-apache" title="Permalink to this headline">¶</a></h1>
<p>If you are using the <a class="reference external" href="https://httpd.apache.org/">Apache</a> webserver you should consider using <a class="reference external" href="https://modwsgi.readthedocs.io/en/develop/">mod_wsgi</a>.</p>
<div class="section" id="installing-mod-wsgi">
<h2>Installing <cite>mod_wsgi</cite><a class="headerlink" href="#installing-mod-wsgi" title="Permalink to this headline">¶</a></h2>
<p>If you don’t have <cite>mod_wsgi</cite> installed yet you have to either install it using
a package manager or compile it yourself.</p>
<p>The mod_wsgi <a class="reference external" href="https://modwsgi.readthedocs.io/en/develop/installation.html">installation instructions</a> cover installation instructions for
source installations on UNIX systems.</p>
<p>If you are using ubuntu / debian you can apt-get it and activate it as follows:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># apt-get install libapache2-mod-wsgi</span>
</pre></div>
</div>
<p>On FreeBSD install <cite>mod_wsgi</cite> by compiling the <cite>www/mod_wsgi</cite> port or by using
pkg_add:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># pkg_add -r mod_wsgi</span>
</pre></div>
</div>
<p>If you are using pkgsrc you can install <cite>mod_wsgi</cite> by compiling the
<cite>www/ap2-wsgi</cite> package.</p>
<p>If you encounter segfaulting child processes after the first apache reload you
can safely ignore them.  Just restart the server.</p>
</div>
<div class="section" id="creating-a-wsgi-file">
<h2>Creating a <cite>.wsgi</cite> file<a class="headerlink" href="#creating-a-wsgi-file" title="Permalink to this headline">¶</a></h2>
<p>To run your application you need a <cite>yourapplication.wsgi</cite> file.  This file
contains the code <cite>mod_wsgi</cite> is executing on startup to get the application
object.  The object called <cite>application</cite> in that file is then used as
application.</p>
<p>For most applications the following file should be sufficient:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">yourapplication</span> <span class="k">import</span> <span class="n">make_app</span>
<span class="n">application</span> <span class="o">=</span> <span class="n">make_app</span><span class="p">()</span>
</pre></div>
</div>
<p>If you don’t have a factory function for application creation but a singleton
instance you can directly import that one as <cite>application</cite>.</p>
<p>Store that file somewhere where you will find it again (eg:
<cite>/var/www/yourapplication</cite>) and make sure that <cite>yourapplication</cite> and all
the libraries that are in use are on the python load path.  If you don’t
want to install it system wide consider using a <a class="reference external" href="https://pypi.org/project/virtualenv/">virtual python</a> instance.</p>
</div>
<div class="section" id="configuring-apache">
<h2>Configuring Apache<a class="headerlink" href="#configuring-apache" title="Permalink to this headline">¶</a></h2>
<p>The last thing you have to do is to create an Apache configuration file for
your application.  In this example we are telling <cite>mod_wsgi</cite> to execute the
application under a different user for security reasons:</p>
<div class="highlight-apache notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;VirtualHost</span> <span class="s">*</span><span class="nt">&gt;</span>
    <span class="nb">ServerName</span> example.com

    <span class="nb">WSGIDaemonProcess</span> yourapplication <span class="k">user</span>=user1 <span class="k">group</span>=group1 processes=2 threads=5
    <span class="nb">WSGIScriptAlias</span> / <span class="sx">/var/www/yourapplication/yourapplication.wsgi</span>

    <span class="nt">&lt;Directory</span> <span class="s">/var/www/yourapplication</span><span class="nt">&gt;</span>
        <span class="nb">WSGIProcessGroup</span> yourapplication
        <span class="nb">WSGIApplicationGroup</span> %{GLOBAL}
        <span class="nb">Order</span> deny,allow
        <span class="nb">Allow</span> from <span class="k">all</span>
    <span class="nt">&lt;/Directory&gt;</span>
<span class="nt">&lt;/VirtualHost&gt;</span>
</pre></div>
</div>
</div>
</div>


          </div>
        </div>
      </div>
  <span id="sidebar-top"></span>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  
    
            <p class="logo"><a href="../../index.html">
              <img class="logo" src="../../_static/werkzeug.png" alt="Logo"/>
            </a></p>
  

  <h3>Contents</h3>
  <ul>
<li><a class="reference internal" href="#"><cite>mod_wsgi</cite> (Apache)</a><ul>
<li><a class="reference internal" href="#installing-mod-wsgi">Installing <cite>mod_wsgi</cite></a></li>
<li><a class="reference internal" href="#creating-a-wsgi-file">Creating a <cite>.wsgi</cite> file</a></li>
<li><a class="reference internal" href="#configuring-apache">Configuring Apache</a></li>
</ul>
</li>
</ul>
<h3>Navigation</h3>
<ul>
  <li><a href="../../index.html">Overview</a>
    <ul>
      <li><a href="../index.html">Application Deployment</a>
        <ul>
          <li>Previous: <a href="../cgi/index.html" title="previous chapter">CGI</a>
          <li>Next: <a href="../fastcgi/index.html" title="next chapter">FastCGI</a></ul>
      </li>
    </ul>
  </li>
</ul>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="https://werkzeug.palletsprojects.com/en/1.0.x/search/" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
  
    <div class="footer" role="contentinfo">
        &#169; Copyright 2007 Pallets.
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
    </div>
    <script>
      if (typeof READTHEDOCS_DATA !== 'undefined') {
        if (!READTHEDOCS_DATA.features) {
          READTHEDOCS_DATA.features = {};
        }
        READTHEDOCS_DATA.features.docsearch_disabled = true;
      }
    </script>

  </body>

<!-- Mirrored from werkzeug.palletsprojects.com/en/1.0.x/deployment/mod_wsgi/ by HTTrack Website Copier/3.x [XR&CO'2014], Tue, 15 Sep 2020 06:37:09 GMT -->
</html>